/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.afcepf.projet2.metiers.donnees.assembleur.commandes;

import fr.afcepf.projet2.metiers.donnees.assembleur.catalogue.ProduitAssembleur;
import fr.afcepf.projet2.metiers.donnees.dto.commandes.LigneCommandeDto;
import fr.afcepf.projet2.metiers.donnees.entites.commandes.LigneCommande;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe permettant l'assemblage des donnes DTO <-> ENTITES LigneCommande
 *
 * @author Wahida
 */
public class LigneCommandeAssembleur {
    
     /**
     * Convertis une entité LigneCommande en DTO correspondant
     *
     * @param ligneCommande Entity de type ligneCommande
     * @return dto de type LigneCommande
     */
    public static LigneCommandeDto creationLigneCommandeDto(LigneCommande ligneCommande) {
        LigneCommandeDto ligneCommandeDto = new LigneCommandeDto();
        ligneCommandeDto.setIdLigneCommande(ligneCommande.getIdLigneCommande());
        ligneCommandeDto.setPrixProduit(ligneCommande.getPrixProduit());
        if(ligneCommande.getProduit() != null){
            ligneCommandeDto.setProduit(
                    ProduitAssembleur.creationProduitDto(ligneCommande.getProduit()));
        }
        ligneCommandeDto.setQuantite(ligneCommande.getQuantite());
        return ligneCommandeDto;
    }

     /**
     * Convertit une liste d'entités LigneCommande en liste de DTO correspondants
     *
     * @param listeLigneCommande liste d'entités à convertir
     * @return liste de DTOs LigneCommande convertis
     */
    public static List<LigneCommandeDto> creationListeLigneCommandeDto(List<LigneCommande> listeLigneCommande) {
        List<LigneCommandeDto> listeLigneCommandeDto = new ArrayList<>();
        for(LigneCommande ligneCommande : listeLigneCommande){
            LigneCommandeDto ligneCommandeDto = creationLigneCommandeDto(ligneCommande);
            listeLigneCommandeDto.add(ligneCommandeDto);
        }
        return listeLigneCommandeDto;
    }

    /**
     * Convertis un DTO LigneCommande en entité correspondante
     *
     * @param ligneCommandeDto Entité à convertir
     * @return Entité LigneCommande correspondant
     */ 
    public static LigneCommande updateLigneCommande(LigneCommandeDto ligneCommandeDto) {
        LigneCommande ligneCommande = new LigneCommande();
        ligneCommande.setIdLigneCommande(ligneCommandeDto.getIdLigneCommande());
        ligneCommande.setPrixProduit(ligneCommandeDto.getPrixProduit());
        if (ligneCommandeDto != null){
            ligneCommande.setProduit(
                    ProduitAssembleur.updateProduit(ligneCommandeDto.getProduit()));
        }
        ligneCommande.setQuantite(ligneCommandeDto.getQuantite());
        return ligneCommande;
    }

    /**
     * Convertit une liste de DTO LigneCommande en entités correspondantes
     *
     * @param listeLigneCommandeDto liste de DTOs à convertir
     * @return liste d'entités EtatCommande converties
     */
    public static List<LigneCommande> updateListeLigneCommande(List<LigneCommandeDto> listeLigneCommandeDto) {
        List<LigneCommande> listeLigneCommande = new ArrayList<>();
        for (LigneCommandeDto ligneCommandeDto : listeLigneCommandeDto){
            LigneCommande ligneCommande = updateLigneCommande(ligneCommandeDto);
            listeLigneCommande.add(ligneCommande);
        }
        return listeLigneCommande;
    }
}
